/**
 * 防抖函数
 * @param {Function} fn 要执行的函数
 * @param {number} wait 延迟的时间（毫秒）
 * @returns {Function} 延迟执行的函数
 */
export const Debounce = (fn, wait) => {
    let delay = wait || 500; // 设置默认延迟时间为 500 毫秒
    let timer; // 定义计时器变量

    return function() {
        let args = arguments; // 存储传入的参数
        if (timer) {
            clearTimeout(timer); // 如果计时器存在，则清除计时器
        }

        let callNow = !timer; // 检查是否应立即执行函数
        timer = setTimeout(() => {
            timer = null; // 延迟时间过后，将计时器设为 null
        }, delay);

        if (callNow) fn.apply(this, args); // 如果应立即执行，则调用传入的函数
    };
};
